'TitleDependency' => 'includes/cache/CacheDependency.php',
'TitleListDependency' => 'includes/cache/CacheDependency.php',
- # includes/conf
- 'Conf' => 'includes/conf/Conf.php',
- 'DatabaseConf' => 'includes/conf/DatabaseConf.php',
- 'DefaultSettings' => 'includes/conf/DefaultSettings.php',
-
# includes/context
'ContextSource' => 'includes/context/ContextSource.php',
'DerivativeContext' => 'includes/context/DerivativeContext.php',
+++ /dev/null
-<?php
-/**
- * Base configuration class.
- *
- * Get some configuration variable:
- * $mySetting = Conf::get( 'mySetting' );
- *
- * Copyright © 2011 Chad Horohoe <chadh@wikimedia.org>
- * http://www.mediawiki.org/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @defgroup Config Config
- */
-abstract class Conf {
- /**
- * A special value to return when default config items do not exist. Use
- * this to differentiate from 'null' which may be a valid config value.
- *
- * Please don't ever make this a default (or accepted) value for your
- * configuration. It's liable to Break Something.
- */
- const NO_SUCH_DEFAULT_CONFIG = 'mw-no-such-default-config';
-
- /**
- * The Wiki ID (usually $wgDBname)
- * @var String
- */
- private $wikiId;
-
- /**
- * Singleton
- * @var Conf
- */
- private static $__instance;
-
- /**
- * Stores of the core defaults, extension defaults and wiki overrides
- *
- * @var array
- */
- protected $defaults, $extensionDefaults, $values = array();
-
- /**
- * Constructor. Children should call this if implementing.
- * @param $confConfig Array of config vars
- */
- protected function __construct( $confConfig ) {
- $this->wikiId = $confConfig['wikiId'];
- $this->defaults = (array)(new DefaultSettings);
- // @todo implement this:
- // $this->initExtensionDefaults();
- $this->initChangedSettings();
- if( isset( $confConfig['exposeGlobals'] ) ) {
- $this->exposeGlobals();
- }
- }
-
- /**
- * Expose all config variables as globals for back-compat. Ewwww.
- */
- private function exposeGlobals() {
- $allVars = $this->defaults + $this->extensionDefaults + $this->values;
- foreach( $allVars as $name => $value ) {
- $var = 'wg' . ucfirst( $name );
- $GLOBALS[$var] = $value;
- }
- }
-
- /**
- * Load customized settings from whatever the data store is
- */
- abstract protected function initChangedSettings();
-
- /**
- * Apply a setting to the backend store
- * @param $name String Name of the setting
- * @param $value mixed Value to store
- */
- abstract protected function writeSetting( $name, $value );
-
- /**
- * Initialize a new child class based on a configuration array
- * @param $conf Array of configuration settings, see $wgConfiguration
- * for details
- * @throws MWException
- * @return Conf
- */
- private static function newFromSettings( $conf ) {
- $class = ucfirst( $conf['type'] ) . 'Conf';
- if( !class_exists( $class ) ) {
- throw new MWException( '$wgConfiguration misconfigured with invalid "type"' );
- }
- return new $class( $conf );
- }
-
- /**
- * Get the singleton if we don't want a specific wiki
- * @param bool|string $wiki An id for a remote wiki
- * @throws MWException
- * @return Conf child
- */
- public static function load( $wiki = false ) {
- throw new MWException( "Not working yet, don't attempt to use this" );
- if( !self::$__instance ) {
- /**global $wgConfiguration;
- self::$__instance = self::newFromSettings( $wgConfiguration );*/
- }
- if( $wiki && $wiki != self::$__instance->getWikiId() ) {
- // Load configuration for a different wiki, not sure how
- // we're gonna do this yet
- return null;
- }
- return self::$__instance;
- }
-
- /**
- * Get a property from the configuration database, falling back
- * to DefaultSettings if undefined
- * @param $name String Name of setting to retrieve.
- * @param $wiki String An id for a remote wiki
- * @return mixed
- */
- public static function get( $name, $wiki = false ) {
- return self::load( $wiki )->retrieveSetting( $name );
- }
-
- /**
- * Actually get the setting, checking overrides, extensions, then core.
- *
- * @param $name String Name of setting to get
- * @return mixed
- */
- public function retrieveSetting( $name ) {
- // isset() is ok here, because the default is to return null anyway.
- if( isset( $this->values[$name] ) ) {
- return $this->values[$name];
- } elseif( isset( $this->extensionDefaults[$name] ) ) {
- return $this->extensionDefaults[$name];
- } elseif( isset( $this->defaults[$name] ) ) {
- return $this->defaults[$name];
- } else {
- wfDebug( __METHOD__ . " called for unknown configuration item '$name'\n" );
- return null;
- }
- }
-
- /**
- * Apply a setting to the configuration object.
- * @param $name String Name of the config item
- * @param $value mixed Any value to use for the key
- * @param $write bool Whether to write to the static copy (db, file, etc)
- */
- public function applySetting( $name, $value, $write = false ) {
- $this->values[$name] = $value;
- if( $write && ( $value !== $this->getDefaultSetting( $name ) ) ) {
- $this->writeSetting( $name, $value );
- }
- }
-
- /**
- * Get the default for a given setting name. Check core and then extensions.
- * Will return NO_SUCH_DEFAULT_CONFIG if the config item does not exist.
- *
- * @param $name String Name of setting
- * @return mixed
- */
- public function getDefaultSetting( $name ) {
- // Use array_key_exists() here, to make sure we return a default
- // that's really set to null.
- if( array_key_exists( $name, $this->defaults ) ) {
- return $this->defaults[$name];
- } elseif( array_key_exists( $name, $this->extensionDefaults ) ) {
- return $this->extensionDefaults[$name];
- } else {
- wfDebug( __METHOD__ . " called for unknown configuration item '$name'\n" );
- return self::NO_SUCH_DEFAULT_CONFIG;
- }
- }
-
- /**
- * What is the wiki ID for this site?
- * @return String
- */
- public function getWikiId() {
- return $this->wikiId;
- }
-}
+++ /dev/null
-<?php
-/**
- * Database configuration class
- *
- * Copyright © 2011 Chad Horohoe <chadh@wikimedia.org>
- * http://www.mediawiki.org/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Config
- */
-class DatabaseConf extends Conf {
- /**
- * @see Conf::initChangedSettings()
- */
- protected function initChangedSettings() {
- $res = wfGetDB( DB_MASTER )->select( 'config', '*', array(), __METHOD__ );
- foreach( $res as $row ) {
- $this->values[$row->cf_name] = unserialize( $row->cf_value );
- }
- }
-
- /**
- * @see Conf::writeSetting()
- *
- * @param $name
- * @param $value
- *
- * @return bool
- */
- protected function writeSetting( $name, $value ) {
- $dbw = wfGetDB( DB_MASTER );
- $value = serialize( $value );
- if( $dbw->selectRow( 'config', 'cf_name', array( 'cf_name' => $name ), __METHOD__ ) ) {
- $dbw->update( 'config', array( 'cf_value' => $value ),
- array( 'cf_name' => $name ), __METHOD__ );
- } else {
- $dbw->insert( 'config',
- array( 'cf_name' => $name, 'cf_value' => $value ), __METHOD__ );
- }
- return (bool)$dbw->affectedRows();
- }
-}
+++ /dev/null
-<?php
-/**
- * Utility class for holding all of our default settings.
- *
- * Copyright © 2011 Chad Horohoe <chadh@wikimedia.org>
- * http://www.mediawiki.org/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Config
- */
-final class DefaultSettings {
- public $mySetting = 'defaultValue';
-}
array( 'addField', 'revision', 'rev_sha1', 'patch-rev_sha1.sql' ),
array( 'addField', 'archive', 'ar_sha1', 'patch-ar_sha1.sql' ),
- // 1.20
- array( 'addTable', 'config', 'patch-config.sql' ),
-
// 1.21
array( 'addField', 'revision', 'rev_content_format', 'patch-revision-rev_content_format.sql' ),
array( 'addField', 'revision', 'rev_content_model', 'patch-revision-rev_content_model.sql' ),
array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ufg_group-length-increase.sql' ),
// 1.20
- array( 'addTable', 'config', 'patch-config.sql' ),
array( 'addIndex', 'revision', 'page_user_timestamp', 'patch-revision-user-page-index.sql' ),
array( 'addField', 'ipblocks', 'ipb_parent_block_id', 'patch-ipb-parent-block-id.sql' ),
array( 'addIndex', 'ipblocks', 'ipb_parent_block_id', 'patch-ipb-parent-block-id-index.sql' ),
array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ufg_group-length-increase.sql' ),
//1.20
- array( 'addTable', 'config', 'patch-config.sql' ),
array( 'addIndex', 'ipblocks', 'i05', 'patch-ipblocks_i05_index.sql' ),
array( 'addIndex', 'revision', 'i05', 'patch-revision_i05_index.sql' ),
array( 'dropField', 'category', 'cat_hidden', 'patch-cat_hidden.sql' ),
array( 'addTable', 'module_deps', 'patch-module_deps.sql' ),
array( 'addTable', 'uploadstash', 'patch-uploadstash.sql' ),
array( 'addTable', 'user_former_groups','patch-user_former_groups.sql' ),
- array( 'addTable', 'config', 'patch-config.sql' ),
array( 'addTable', 'external_user', 'patch-external_user.sql' ),
# Needed before new field
array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ug_group-length-increase.sql' ),
// 1.20
- array( 'addTable', 'config', 'patch-config.sql' ),
array( 'addIndex', 'revision', 'page_user_timestamp', 'patch-revision-user-page-index.sql' ),
array( 'addField', 'ipblocks', 'ipb_parent_block_id', 'patch-ipb-parent-block-id.sql' ),
array( 'addIndex', 'ipblocks', 'ipb_parent_block_id', 'patch-ipb-parent-block-id-index.sql' ),
+++ /dev/null
--- Table for holding configuration changes
-CREATE TABLE /*_*/config (
- -- Config var name
- cf_name varbinary(255) NOT NULL PRIMARY KEY,
- -- Config var value
- cf_value blob NOT NULL
-) /*$wgDBTableOptions*/;
--- Should cover *most* configuration - strings, ints, bools, etc.
-CREATE INDEX /*i*/cf_name_value ON /*_*/config (cf_name,cf_value(255));
);
CREATE UNIQUE INDEX ufg_user_group
ON user_former_groups (ufg_user, ufg_group);
-
-
-
--- Table for holding configuration changes
-CREATE TABLE config (
- cf_name VARCHAR(255) NOT NULL
- PRIMARY KEY,
- cf_value CLOB(64K) INLINE LENGTH 4096 NOT NULL
-);
-
+++ /dev/null
-define mw_prefix='{$wgDBprefix}';
-
-CREATE TABLE &mw_prefix.config (
- cf_name VARCHAR2(255) NOT NULL,
- cf_value blob NOT NULL
-);
-ALTER TABLE &mw_prefix.config ADD CONSTRAINT &mw_prefix.config_pk PRIMARY KEY (cf_name);
-
);
CREATE UNIQUE INDEX &mw_prefix.module_deps_u01 ON &mw_prefix.module_deps (md_module, md_skin);
-CREATE TABLE &mw_prefix.config (
- cf_name VARCHAR2(255) NOT NULL,
- cf_value blob NOT NULL
-);
-ALTER TABLE &mw_prefix.config ADD CONSTRAINT &mw_prefix.config_pk PRIMARY KEY (cf_name);
--- leaving index out for now ...
-
-- do not prefix this table as it breaks parserTests
CREATE TABLE wiki_field_info_full (
table_name VARCHAR2(35) NOT NULL,
+++ /dev/null
-CREATE TABLE config (
- cf_name TEXT NOT NULL PRIMARY KEY,
- cf_value TEXT NOT NULL
-);
-CREATE INDEX cf_name_value ON config (cf_name, cf_value);
\ No newline at end of file
md_deps TEXT NOT NULL
);
CREATE UNIQUE INDEX md_module_skin ON module_deps (md_module, md_skin);
-
-CREATE TABLE config (
- cf_name TEXT NOT NULL PRIMARY KEY,
- cf_value TEXT NOT NULL
-);
-CREATE INDEX cf_name_value ON config (cf_name, cf_value);
) /*$wgDBTableOptions*/;
CREATE UNIQUE INDEX /*i*/md_module_skin ON /*_*/module_deps (md_module, md_skin);
--- Table for holding configuration changes
-CREATE TABLE /*_*/config (
- -- Config var name
- cf_name varbinary(255) NOT NULL PRIMARY KEY,
- -- Config var value
- cf_value blob NOT NULL
-) /*$wgDBTableOptions*/;
--- Should cover *most* configuration - strings, ints, bools, etc.
-CREATE INDEX /*i*/cf_name_value ON /*_*/config (cf_name,cf_value(255));
-
-- Holds all the sites known to the wiki.
CREATE TABLE /*_*/sites (
-- Numeric id of the site